package com.zhitxx.common.utils

import android.content.Context
import android.content.pm.PackageInfo
import android.os.Build

/**
 * 与APP 信息相关的工具类
 */
object AppUtils {
    var context: Context? = null

    /**
     * 通过反射来获取当前应用的context
     */
    fun getContexts(): Context? {
        if (context == null) {
            val clss = Class.forName("android.app.ActivityThread")
            val method = clss.getMethod("currentActivityThread")
            val invoke = method.invoke(clss)
            val method2 = invoke.javaClass.getMethod("getApplication")
            val context: Context = method2.invoke(invoke) as Context
            return context
        } else {
            return context
        }
    }

    /**
     * 获取包名
     */
    fun getPackageName(): String = getContexts()!!.packageName

    /**
     * 获取包信息
     */
    fun getPackageInfo(): PackageInfo = getContexts()!!.packageManager.getPackageInfo(getPackageName(), 0)


    /**
     * 获取版本号名称
     */
    fun getVersionName(): String = getPackageInfo().versionName

    /**
     * 获取版本号
     */
    fun getVersionNumber(): Long = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        getPackageInfo().longVersionCode
    } else {
        getPackageInfo().versionCode.toLong()
    }


}